// var obj = new Proxy({}, {
//     get: function (target, key, receiver) {
//         console.log(`getting ${key}!`);
//         return Reflect.get(target, key, receiver);
//     },
//     set: function (target, key, value, receiver) {
//         console.log(`setting ${key}!`);
//         return Reflect.set(target, key, value, receiver);
//     }
// })
// obj.count=1;
// ++obj.count;
function log(s){
    console.log(s);
}
// var person={
//     name:'张三'
// }
// var proxy=new Proxy(person,{
//     get(target,property){
//         if(property in target){
//             return target[property];
//         }else{
//             throw new ReferenceError('Property :'+property+' not exist!');
//         }
//     }
// });
// log(proxy.name);
// log(proxy.age);

function createArray(...elements){
    let handler={
        get(target,property,receiver){
            let index=Number(property);
            if(index<0){
                property=elements.length+index;
            }
            return Reflect.get(target,property,receiver);
        }
    }
    let target=[];
    target.push(...elements);
    return new Proxy(target,handler);
}

var arr=createArray('a','b','c');
log(arr[-1])